package basica.academico;

import java.util.Collection;

import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import basica.administrativo.Turno;

@Entity
@Table(name = "TBTURMA")
public class Turma {
	
	@Id
	@Column(name = "CodTurma")
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Integer codigo;
	
	@ManyToOne
	@JoinColumn(name = "CodCurso")
	private Curso curso;
	
	@Enumerated(EnumType.STRING)
	private Turno turno;
	
	@Column(name = "QtdMaxima", length = 3, nullable = false)
	private int quantidadeMaxima;
	
	@Column(name = "PeriodoTurma", length = 6, nullable = false)
	private int periodo;
	
	@ElementCollection(fetch=FetchType.LAZY)
	private Collection<Aluno> alunos;

	public Turma() {
		super();
		this.curso = new Curso();
	}

	public Turma(int codigo, Curso curso, Turno turno, int quantidadeMaxima,
			int periodo, Collection<Aluno> alunos) {
		super();
		this.codigo = codigo;
		this.curso = curso;
		this.turno = turno;
		this.quantidadeMaxima = quantidadeMaxima;
		this.periodo = periodo;
		this.alunos = alunos;
	}

	public Integer getCodigo() {
		return codigo;
	}

	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	public Curso getCurso() {
		return curso;
	}

	public void setCurso(Curso curso) {
		this.curso = curso;
	}

	public Turno getTurno() {
		return turno;
	}

	public void setTurno(Turno turno) {
		this.turno = turno;
	}

	public int getQuantidadeMaxima() {
		return quantidadeMaxima;
	}

	public void setQuantidadeMaxima(int quantidadeMaxima) {
		this.quantidadeMaxima = quantidadeMaxima;
	}

	public int getPeriodo() {
		return periodo;
	}

	public void setPeriodo(int periodo) {
		this.periodo = periodo;
	}

	public Collection<Aluno> getAlunos() {
		return alunos;
	}

	public void setAlunos(Collection<Aluno> alunos) {
		this.alunos = alunos;
	}
}
